![]() Buffering data that flows between buses operating at different frequencies
专利摘要:
A " virtual FIFO " system used to buffer data between transaction buses 12 and 18 that transmits data at different rates provides memory device 31 and its memory devices in multiple regions 32-1 and 32-2. 32-N), each controller being configured to operate as a separate data buffer. 公开号:KR20010031430A 申请号:KR1020007004461 申请日:1998-10-27 公开日:2001-04-16 发明作者:수삼;차우비;타르댄 申请人:에멀럭스 코포레이숀; IPC主号:
专利说明:
Devices and Methods for Buffering Data Transmitted Between Buses Operating at Different Frequencies {BUFFERING DATA THAT FLOWS BETWEEN BUSES OPERATING AT DIFFERENT FREQUENCIES} Conventional computer systems include multiple data buses that facilitate data transfer between various components of the system. In general, data buses operate in different forms that operate in accordance with different functional standards, such as the Industry Standard Architecture (ISA), the Extended Industry Standard Architecture (EISA), Peripheral Interface (PCI), and Small Computer System Interface (SCSI) standards to be. Features that distinguish different types of data buses are the operating frequency or the speed of the bus that transfers data between components residing on the bus. In a typical computer system, data is transferred between devices located on different buses operating at different frequencies. For example, a microprocessor located on a host bus running at 50 MHz often needs to pass data to a device located on a PCI bus running at 8 MHz. To compensate for this imbalance between operating frequencies, the computer system must include a buffering system between the data buses. Conventional buffering systems use standard memory devices such as first-in, first-out (FIFO) buffers. A typical FIFO buffer usually has two ports, while the second port transfers data to the second bus at the second data rate while the first port receives data from the first bus at the first data rate. . The FIFO buffering scheme requires careful synchronization of the read controller and write controller to prevent data from overflowing and underflowing in the FIFO buffer. Some FIFO buffering schemes use multiple memory devices to form multiple FIFO buffers, such as the well-known ″ double buffering ″ technique, where a first buffer in a pair of distinct addressable buffers is a second buffer. Has data written to the first buffer while the buffer is being read. The role of the distinct buffer is switched periodically. Various techniques are used to work with buffer synchronization issues. Some techniques allow the write and read sides of a single buffer to operate in mutually exclusive ways. Write control logic fills the data into the buffer until the buffer is full, and then signals read control logic to start reading its contents. Upon completion of the read, the read control logic signals the write control logic to refill the buffer. This process continues until all data has been transferred. This method is simple and straightforward to ensure the integrity of the data, but at least one side of the buffer does not operate at a given time, which has the drawback of long latency. Another way to determine the full / empty state of a FIFO is to compare the write and read pointers of the FIFO. If the two pointers are aligned and the final job is a write command, the FIFO is full. When the two pointers are aligned, the FIFO is empty if the last operation is a read command. This method works well when the read and write control logic works together at the same clock rate. There is a risk of data corruption since both sides are likely to generate an error or nondeterministic empty / full state when operating at different clock speeds. Thus, the inventors have concluded that a technique for buffering data transmitted between buses operating at different frequencies is a better approach. The present invention provides a method and system for achieving this object. The present invention relates to data buffering and, more particularly, to buffering data transmitted between buses operating at different frequencies. 1 is a block diagram of various components of a computer system. 2 is a block diagram of a system for buffering data flowing between data buses operating at different frequencies. 3 is a timing diagram for one embodiment of the present invention. The invention features a ″ virtual FIFO ″ system used to buffer data between transacting buses that transmit data at different rates. The system includes a memory device that is divided into a number of banks, each bank configured to operate as a separate data buffer. This splitting operation is done dynamically on the basis of ″ on the fly ″. The present invention eliminates the possibility of an FIFO's ambiguity state while maintaining the efficiency of the FIFO by allowing read and write operations to occur simultaneously. In an improved embodiment, the memory device is a two-port (read side, write side) random access (RAM) device formed of FIFOs. Two-port RAM allows independent and random access from both sides of the FIFO's read and write to the desired location of the RAM. The write controller generates a write strobe to the ram and controls the write address generation. The read controller is responsible for controlling read address generation. If the RAM FIFO allows read and write access simultaneously for a particular particular bank, only one of the two operations is allowed, since the write controller and read controller never access the same logical bank at the same time. Therefore, all overflow and underflow conditions are prevented. In one embodiment, the system includes a status flag associated with each data buffer, and includes a flag indicating whether data can be written to the data buffer and another flag indicating whether data can be read from the data buffer. The status flag may be stored in its own memory device or other memory structure. In another embodiment, a single binary state flag is used to indicate the read / write state of the data buffer. In another embodiment, the controller divides the memory device into multiple data buffer banks, and also handles data transfer to and from the data buffer. The controller can include separate write and read controllers, so that the status flags described above can be used to determine when to read and write data from the data buffer. Advantages of the present invention include one or more of the following. Use of a single memory device to form multiple data buffers provides an efficient and effective data buffering system that is less expensive than previous systems. Data from one or more data transactions can be read and written in an interleaved buffering system in a simultaneous manner. A single memory device is used to buffer data between two buses operating at different frequencies without underflow or overflow, despite significant imbalance in the operating frequencies of the buses. One or more embodiments of the invention will be described with reference to the drawings and the following specification. Other features and objects and advantages of the invention will be apparent from the description and drawings, and from the claims. Referring to FIG. 1, computer system 10 has at least two data buses that facilitate data transfer between components of the computer system. One of these data buses, primary bus 12, is a ″ host ″ bus dedicated to conducting data transactions involving the computer's central processing unit (CPU) 14 and main memory 16. The host bus 12 operates at a first frequency (eg, 50 MHz), and the secondary bus 18 is a transaction involving the other devices 20 and 22 in the computer system 10 and the CPU 14 and one or more devices. This includes not only transactions between (20, 22) but also transactions between their own devices (20, 22). The secondary bus, which can be any form of data bus (e.g., ISA, EISA, PCI, SCSI), operates at a second frequency (e.g., 8 MHz). Devices 20 and 22 residing on secondary bus 18 may be of any type of devices, including input / output (I / O) devices such as keyboards or printers, and peripheral devices such as video cards or network interface cards (NICs). Can be. Primary bus 12 and secondary bus 18 are connected by a bridge device 24 that processes data transactions between the two buses. The bridge device 24 can serve two roles: as a translator for interpreting commands occurring on one bus to another for delivery, and as a buffering system for data transfer in accordance with the commands. . The buffering method equipped with the bridge device 24 is described below. The primary bus controller 26 handles contending requests from the CPU 14 and the bridge device 24 to access the primary bus 12, as is well known. Similarly, secondary bus controller 28 processes contention requests from secondary devices 20 and 22 and bridge device 24 that access secondary bus 18. Referring to FIG. 2, the bridge device 24 is a single FIFO memory device 31 is controlled by the controller 35 N separate memory areas (″ banks ″) 32-1, 32-2, ..., 32-. It uses a virtual ″ FIFO ″ buffering scheme in that it is divided into N). Preferably, each bank contains a contiguous block of memory addresses. The controller 35 treats the banks 32-1, 32-2, ..., 32-N as separate FIFO buffers, and each bank can store data independently or in association with another bank. For example, banks 32-1, 32-2, ..., 32-N may be used individually to buffer data consistent with multiple separate transactions, or match fewer but larger transactions. Can also be used together to buffer a piece of data. One bank size ranges from one word (eg, two bytes) of data to the total storage capacity of the memory device 31. Therefore, the memory device 31 may consist of as few as one bank, or may consist of as many banks as data words that the memory device can store. There is a trade off between the number of status flags required for the read and write controllers to track and the complexity of the controller and the efficiency of the FIFO. In other words, as N increases, the efficiency of the FIFO increases, but the number of state flags and the complexity of the controller also increase. In the described embodiment, the memory map 40 generated and maintained by the controller 35 defines a boundary of the banks 32-1, 32-2, ..., 32-N, no matter how many banks are formed. Identifies the memory address. The write controller 42 processes the flow of data into the banks 32-1, 32-2, ..., 32-N, and the read controller 44 processes the banks 32-1, 32-2, ..., 32. -N) Process the data flow to the outside. The write and read controllers 42 and 44 can be replaced by state machines, for example. Write and read controllers 42 and 44 allow data in memory device 31 to be simultaneously written to and read from the second bank. The controllers 42 and 44 protect the integrity of the data in the buffers, allowing the device to only start writing data to the bank when the bank is empty and to start reading data from the bank when the bank is full. Because it allows. Each bank 32-1, 32-2,..., 32 -N has at least two associated status flags. The " done " flags 34-1, 34-2, ..., 34-N are empty because the corresponding banks 32-1, 32-2, ..., 32-N are empty. instructs the recording controller 42 that data can be received from a writing device, and the " start " flags 36-1, 36-2,... The bank instructs the read controller 44 that it can provide data to a reading denice. The write controller 42 removes the ″ dawn ″ flag for that bank when the recording device starts placing data in the bank. The write controller 42 then sets a " start " flag in that bank if the bank is full or if the recording device finishes its data transfer before the bank is full. Similarly, read controller 44 removes the ″ start ″ flag when the read device begins taking data from the bank and then sets the ″ done ″ flag when the bank is empty. In a better embodiment, the ″ start ″ and ″ dawn ″ flags are removed at the same time when data transfer starts and when ″ powered up ″. For maximum data integrity, the "start" flag of one bank is also used to remove the "don" flag of the same bank, and the "dun" flag is used to remove the "start" flag of that bank. This interlock hand-shake mechanism allows the clock speeds from both sides of the FIFO to be completely independent of each other, and there is no limit to the operating range. The ″ start ″ and ″ dawn ″ flags can be stored in various storage devices as listed below. ; In banks 32-1, 32-2, ..., 32-N, outside of banks 32-1, 32-2, ..., 32-N, in memory device 31, or in registers (if " start " And register 38 would not be present if the ″ dawn ″ flag was stored in memory device 31). Alternatively, the write and read controllers 42 and 44 maintain the ″ start ″ and ″ don ″ flags therein, and each controller 42, 44 has a different controller 44, depending on whether the buffer is full or empty. 42) You can send a message directly. In another embodiment, a single binary status flag is used to indicate ″ start ″ and ″ don ″. In this case, the write controller 42 cannot write to the bank until the flag for the bank is set to "don". The write controller 42 then writes to that bank and resets the corresponding flag to "start" when writing is complete. In a similar operation, read controller 44 cannot read from the bank until the corresponding flag is reset to ″ start ″. After all the banks have been read, the read controller 44 resets the corresponding flag to ″ dawn ″. In this embodiment, however, care must be taken to prevent the ″ race ″ state, which is where the second controller reads the state of the flag and acts accordingly while the first controller changes the flag. The write controller 42 synchronizes the set of the write controller's ″ start ″ flags so that the ″ virtual FIFO ″ buffering scheme operates properly regardless of the data transfer rates of the data buses 12 and 14 (internal clocks of the read controller). Not used). The ″ start ″ and ″ don ″ flags provide a mechanism to protect read and write controllers 42 and 44 from accessing the same logical bank at the same time. This prevents any overflow and underflow. The ″ virtual FIFO ″ buffering scheme provides sufficient buffering despite large differences between operating frequencies of the data bus. In addition, at least one memory device 31 and bridge device 24 having multiple data buffer banks may add one or more memory devices 46, each of which may also be divided as described above. In this situation, the memory controller 35 is used to process all the memory devices in the bridge device 24, and a separate memory controller can be provided to each memory device in the bridge. Each memory device 31, 46 may be embodied in a single RAM. Alternatively, memory devices 31 and 46 may be implemented as a single memory module (eg, SIMM or DIMM) that functions as a single addressable device and includes an integrated circuit. In other cases, memory devices 31 and 46 may include volatile or nonvolatile memory and may be in the form of predetermined RAM (eg, DRAM, SRAM, EDO-RAM, etc.), but preferably static RAM. The memory devices 31 and 46 can be divided into banks of the same size, and the banks can also be of different sizes, which is useful in its use, for example in applications using asymmetrical data transfer. Each memory device can be permanently partitioned at once, or the banks can be defined dynamically as needed. The ″ start ″ and ″ dun ″ flags described above will typically be a single bit in length, but flags of other sizes (eg nibbles, bytes, words, etc.) may also be used. Alternatively, as noted above, a single bit may be used for each ″ start ″ and ″ done ″ flag pair (eg, toggling between high and low logic levels is ″ start ″ and ″ don ″ Can be used to indicate status). Optionally, each bank may have an associated ″ last ″ flag, which indicates whether the bank is the last bank for the current data transfer operation. In this configuration, data is written to the FIFO in a continuous form (e.g., bank 32-1 is written until full, then banks 32-2, ..., 32-N, and back to bank 32-1). The data is read in a similar continuous form. After the bank is full, the write controller 42 sets a ″ start ″ flag corresponding to that bank. When a write operation is made at the last storage location of the bank, the write controller 42 checks the ″ start ″ flag of the next bank. If the ″ start ″ flag is removed (the bank is empty), the write controller 42 will continue the write operation, and if the ″ start ″ flag is not removed (the bank is not empty), write The operation will stop. However, the write controller 42 continuously checks the ″ start ″ flag of the next bank. When the ″ start ″ flag begins to be removed, the write operation starts again. When the last word of a data transfer is written to a bank, the write controller 42 sets the ″ start ″ flag of the bank (even if that bank is full or not occupied) and also sets the ″ final ″ flag of that bank. The read controller 44 reads the bank in which the "start" flag is set. After the bank has been read, the read controller 44 sets a "don" flag for that bank indicating whether the bank is writable. When the last storage location of the bank is read, the read controller 44 checks the ″ start ″ flag of the next bank. If the ″ start ″ flag is set (the bank is in preparation), the read controller 44 continues the read operation. If the ″ start ″ flag is not set (the bank is not ready), the read operation will stop. However, the read controller 44 continuously checks the ″ start ″ flag of the next bank. When the ″ start ″ flag begins to be set, the read operation starts again. If the current bank has both a ″ start ″ and a ″ last ″ state flag set, read controller 44 recognizes that this bank is the last bank for the current data transfer operation. Thus, the read controller 44 reads data from the bank until the read pointer is lined up with the write pointer, and then sets the ″ don ″ flag for that bank. In another embodiment, the number of bytes or words in each write operation is communicated directly to read controller 44. In this configuration, the ″ final ″ flag is not necessary. 3 is a timing diagram for one embodiment of the present invention. This timing diagram shows 96 words using a 32-word data transfer configuration in which the width of the FIFO memory device 31 has a depth of 48 rows. The device is divided into three banks. Divided. Also shown is the acknowledgment method between the ″ start ″ bit and the ″ dawn ″ bit. In this example, the write clock is twice as fast as the read clock. The following commentary is described in order of events. (W1) After writing to the last storage place of bank 1, the start 1 flag is set. (W2) After writing to the last storage location of bank 2, the start 2 flag is set. (W3) After writing to the last storage location of bank 3, the start 3 flag is set. (W4) A set of Start 1 causes the read controller to start reading. (W5) After bank 1 fills for the second time, the Dun 1 flag is reset. (W6) After bank 2 fills for the second time, the Dunn 2 flag is reset. (W7) After bank 3 fills for the second time, the Dun 3 flag is reset. (W8) After reading each bank, the read controller checks for the start bit of the next bank. In this case, the state is set and reading continues. (W9) Since bank 3 is completed, the recordable state (WREN) is ineffective (stops writing to the FIFO) and the write controller recognizes that start 1 is still set (bank 1 is not empty). ). The write operation continues after Start 1 is removed. (R1) After reading the last storage location in bank 1, Dun 1 is set to reset start 1. (R2) After reading the last storage location in bank 2, Dun 2 is set to reset start 2. (R3) After reading the last storage location in bank 3, Dun 3 is set to reset start 3. (R4) After reading the last storage location in bank 3, the read controller recognizes that the start bit of the next bank (bank 1) is not set and stops the read operation. A number of embodiments of the invention have been described. Nevertheless, it will be understood that various improvements may be made without departing from the nature and scope of the invention. For example, while the present invention describes a data transaction involving a host bus, the present invention relates to a PCI-to-PCI bus transaction or a PCI-to-I / O bus. Like transactions, it can be used for data transactions between various bus types. Accordingly, other embodiments are within the scope of the following claims.
权利要求:
Claims (18) [1" claim-type="Currently amended] In a first-in, first-out (FIFO) bridge device that handles data transfer between a souce bus and a destination bus, each operating at a different speed, A dynamically partitionable memory device with variable N separate memory banks, where each memory bank stores data transferred from a source bus to a destination bus during a data transfer operation; May be operable to partition the memory device, and together to set status flags in a manner that prohibits writing to the memory bank until predetermined data stored prior to the memory bank is read. A bridge device comprising a controller comprising a write controller and a read controller. [2" claim-type="Currently amended] The bridge device of claim 1, wherein the bridge device is a single integrated circuit. [3" claim-type="Currently amended] 3. The bridge device of claim 2, wherein the memory device is dynamically partitioned by the controller to maximize the data transfer rate from the source bus to the destination bus. [4" claim-type="Currently amended] 4. The bridge device of claim 3, wherein the controller dynamically partitions the memory device in response to a set of externally input parameters. [5" claim-type="Currently amended] 5. The bridge device of claim 4, wherein the bridge device is a single integrated circuit and the external input parameter is a programmed input to the integrated circuit. [6" claim-type="Currently amended] 6. The bridge device of claim 5, wherein the external input parameter includes information about the length of each data transmission. [7" claim-type="Currently amended] 6. The bridge device of claim 5, wherein the external input parameter comprises N values of variables of a separate memory bank in which the memory device is divided. [8" claim-type="Currently amended] 6. The bridge device of claim 5, wherein the external input parameter includes information regarding a desired size of each of N separate memory banks. [9" claim-type="Currently amended] In a FIFO bridge device that includes a controller and a memory device, In a method for processing data transfer between a source bus and a destination bus, each operating at a different speed, the controller Dynamically dividing the memory device into N separate memory banks that are variables in response to an external set of input parameters, where each memory bank stores data transmitted during a data transfer operation; Writing data to a first memory bank of the N separate memory banks; Setting a flag when the first memory bank is full; Writing data to a second memory bank of the N separate memory banks; Checking a flag of the first memory bank to determine whether the memory bank is full or not; Starting to read information stored in the first memory bank when the flag is set to full. [10" claim-type="Currently amended] 10. The method of claim 9, wherein the bridge device is a single integrated circuit and the external input parameter is an input programmed into the integrated circuit. [11" claim-type="Currently amended] 10. The method of claim 9, wherein the external input parameter includes information about each data transmission length. [12" claim-type="Currently amended] 10. The method of claim 9, wherein the external input parameter comprises N (variable) values of separate memory banks in which the memory device is divided. [13" claim-type="Currently amended] 10. The method of claim 9, wherein the external input parameter includes information about a desired desired size of the N separate memory banks. [14" claim-type="Currently amended] 10. The method of claim 9, wherein the memory device is dynamically partitioned to maximize the rate of data transfer from the source bus to the destination bus. [15" claim-type="Currently amended] 10. The method of claim 9, wherein starting the reading is performed before the second memory bank starts to kick. [16" claim-type="Currently amended] 16. The method of claim 15, wherein the read start step is performed simultaneously with the step of writing data to the second memory bank. [17" claim-type="Currently amended] 17. The method of claim 16, further comprising setting a flag that was read when completing reading the data in the first memory bank and reading the data written there. [18" claim-type="Currently amended] The method of claim 16, The controller includes a read controller and a write controller, The method includes setting a final status flag after the last word is written to a second memory bank by the write controller; Reading data from a second memory bank after the first memory bank has been read by the read controller and detecting a final status flag.
类似技术:
公开号 | 公开日 | 专利标题 CN104520932B|2018-04-10|flash memory controller EP0343769B1|1995-07-12|Apparatus and method for accessing a page mode memory in a computer system KR100621631B1|2006-09-13|Solid state disk controller apparatus US5815677A|1998-09-29|Buffer reservation method for a bus bridge system EP0009678B1|1982-12-08|Computer input/output apparatus US5870625A|1999-02-09|Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command US7822904B2|2010-10-26|Capturing read data US7277988B2|2007-10-02|System, method and storage medium for providing data caching and data compression in a memory subsystem KR101154708B1|2012-06-11|System, apparatus, and method for modifying the order of memory accesses US7047351B2|2006-05-16|Memory hub bypass circuit and method US7069373B2|2006-06-27|USB endpoint controller flexible memory management US4527233A|1985-07-02|Addressable buffer circuit with address incrementer independently clocked by host computer and external storage device controller US6026464A|2000-02-15|Memory control system and method utilizing distributed memory controllers for multibank memory US7782683B2|2010-08-24|Multi-port memory device for buffering between hosts and non-volatile memory devices US5535340A|1996-07-09|Method and apparatus for maintaining transaction ordering and supporting deferred replies in a bus bridge US5835435A|1998-11-10|Method and apparatus for dynamically placing portions of a memory in a reduced power consumtion state US7315912B2|2008-01-01|Deadlock avoidance in a bus fabric KR101035225B1|2011-05-18|Controller apparatus and method for improved data transfer US6209067B1|2001-03-27|Computer system controller and method with processor write posting hold off on PCI master memory request US6405276B1|2002-06-11|Selectively flushing buffered transactions in a bus bridge US4937734A|1990-06-26|High speed bus with virtual memory data transfer and rerun cycle capability US6151651A|2000-11-21|Communication link with isochronous and asynchronous priority modes coupling bridge circuits in a computer system US5901294A|1999-05-04|Method and system for bus arbitration in a multiprocessor system utilizing simultaneous variable-width bus access US6233641B1|2001-05-15|Apparatus and method of PCI routing in a bridge configuration KR100954904B1|2010-04-27|Receiving data from interleaved multiple concurrent transactions in a fifo memory
同族专利:
公开号 | 公开日 WO1999022302B1|1999-07-01| CA2307816C|2002-02-12| US6047339A|2000-04-04| DE69834739T2|2007-05-16| WO1999022302A1|1999-05-06| EP1032882A4|2004-03-03| JP3598321B2|2004-12-08| EP1032882A1|2000-09-06| EP1032882B1|2006-05-31| JP2001521246A|2001-11-06| DE69834739D1|2006-07-06| CA2307816A1|1999-05-06|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
1997-10-27|Priority to US08/957,856 1997-10-27|Priority to US08/957,856 1997-10-27|Priority to US8/957,856 1998-10-27|Application filed by 에멀럭스 코포레이숀 1998-10-27|Priority to PCT/US1998/022807 2001-04-16|Publication of KR20010031430A 2002-05-16|Application granted 2002-05-16|Publication of KR100337056B1
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 US08/957,856|1997-10-27| US08/957,856|US6047339A|1997-10-27|1997-10-27|Buffering data that flows between buses operating at different frequencies| US8/957,856|1997-10-27| PCT/US1998/022807|WO1999022302A1|1997-10-27|1998-10-27|Buffering data that flows between buses operating at different frequencies| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|